﻿using System;
using System.Collections.Generic;
using DDDSample.Domain.Cargo;
using DDDSample.Domain.Location;

namespace DDDSample.Application.Book
{
    public interface IBookService
    {
        Cargo Find(Guid id);

        IList<Cargo> FindAll();

        Location FindLocation(UnLocode locode);

        IList<Location> ListShippingLocations();

        Guid BookNewCargo(UnLocode origin, UnLocode destination, DateTime arrivalDeadline);

        IList<Itinerary> RequestPossibleRoutesForCargo(Guid cargoId);

        void AssignCargoToRoute(Guid cargoId, Itinerary itinerary);

        void ChangeDestination(Guid cargoId, UnLocode unLocode);
    }
}